package chapter003;

/**
 *  这个是文档注释, 对类/方法/常量等的说明
 *  JavaSE 第三章
 *  类型转换讲解
 *
 *   @author Jack魏
 */
public class Point03 {
    public static void main(String[] args) {
        /**
         * 类型转换分为 自动类型转换 和 强制类型转换
         * 转换从低级到高级:
         * byte,short,char—> int —> long—> float —> double
         */
        byte byteVar = 1;
        // 自动转换, 小容器倒进大容器, 值还是不变的.
        int intVar = byteVar;
        // byte-->int====1
        System.out.println("byte-->int====" + intVar);

        // 强制转换, 大容器倒进小容器, 会导致精度丢失.
        float floatVar = 666.666f;
        intVar = 666;
        byteVar = (byte) intVar;
        intVar = (int) floatVar;
        // int-->byte====-102
        System.out.println("int-->byte====" + byteVar);
        // float-->int====666
        System.out.println("float-->int====" + intVar);


        /***********标识符举例***********/
        int 你好 = 1;
        double _i_ = 10;
        float aaaaaaaaaaa = 88f;
        char $$$$hhhhhh$$$ = 99;
        boolean hh6666 = false;

        /*
        标识符规范：
        1.所有标识符都应该以大小写字母（a-z或A-Z）、下划线（_）、美元符（$）、数字组合而成，但是不能以数字开头。
        2.不能使用关键字作为变量名、方法、类等。
        3.大小写敏感
        4.不能使用中文、不建议使用拼音。
        5.变量起名：首字母小写，多个单词开头大写如：userName、isAdmin
        6.类起名：首字母大写，多个单词开头大写如：UserInfo、AdminController
        8.包取名：全部小写，以.分割如：com.jack.java
         */

        /*
        关键字：
        abstract        表明类或者成员方法具有抽象属性
        assert        断言，用来进行程序调试
        boolean        基本数据类型之一，声明布尔类型的关键字
        break        提前跳出一个块
        byte        基本数据类型之一，字节类型
        case        用在switch语句之中，表示其中的一个分支
        catch        用在异常处理中，用来捕捉异常
        char        基本数据类型之一，字符类型
        class        声明一个类
        const        保留关键字，没有具体含义
        continue        回到一个块的开始处
        default        默认，例如，用在switch语句中，表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
        do        用在do-while循环结构中
        double        基本数据类型之一，双精度浮点数类型
        else        用在条件语句中，表明当条件不成立时的分支
        enum        枚举
        extends        表明一个类型是另一个类型的子类型。对于类，可以是另一个类或者抽象类；对于接口，可以是另一个接口
        final        用来说明最终属性，表明一个类不能派生出子类，或者成员方法不能被覆盖，或者成员域的值不能被改变，用来定义常量
        finally        用于处理异常情况，用来声明一个基本肯定会被执行到的语句块
        float        基本数据类型之一，单精度浮点数类型
        for        一种循环结构的引导词
        goto        保留关键字，没有具体含义
        if        条件语句的引导词
        implements        表明一个类实现了给定的接口
        import        表明要访问指定的类或包
        instanceof        用来测试一个对象是否是指定类型的实例对象
        int        基本数据类型之一，整数类型
        interface        接口
        long        基本数据类型之一，长整数类型
        native        用来声明一个方法是由与计算机相关的语言（如C/C++/FORTRAN语言）实现的
        new        用来创建新实例对象
        package        包
        private        一种访问控制方式：私用模式
        protected        一种访问控制方式：保护模式
        public        一种访问控制方式：共用模式
        return        从成员方法中返回数据
        short        基本数据类型之一,短整数类型
        static        表明具有静态属性
        strictfp        用来声明FP_strict（单精度或双精度浮点数）表达式遵循IEEE 754算术规范
        super        表明当前对象的父类型的引用或者父类型的构造方法
        switch        分支语句结构的引导词
        synchronized        表明一段代码需要同步执行
        this        指向当前实例对象的引用
        throw        抛出一个异常
        throws        声明在当前定义的成员方法中所有需要抛出的异常
        transient        声明不用序列化的成员域
        try        尝试一个可能抛出异常的程序块
        void        声明当前成员方法没有返回值
        volatile        表明两个或者多个变量必须同步地发生变化
        while        用在循环结构中
         */
    }
}
